#ifndef MOTORINGANDBRAKINGSTATUS_H
#define MOTORINGANDBRAKINGSTATUS_H

#include <QWidget>
#include <QTimer>

namespace Hydra_MotoringAndBraking {

enum TRACTION_STATUS
{
    INIT,
    MOTORING,
    COASTING,
    BRAKING
};

}


using namespace Hydra_MotoringAndBraking;

class MotoringAndBrakingStatus : public QWidget
{
    Q_OBJECT

public:
    MotoringAndBrakingStatus(QWidget *parent = 0);

    void setStatus(enum TRACTION_STATUS status);                                            // 设置牵引制动状态
    void setTextColor(QColor color);                                                        // 设置文本颜色
    void setText(QString str);                                                              // 设置文本内容
    void setTextFontFace(QString name);                                                     // 设置文本字体类型
    void setInterval(quint16 interval);                                                     // 设置刷新频率
    void setCustomerText(bool flag);                                                        // 设置自定义文本

public slots:
    void refresh();                                                                         // 刷新

protected:
    void paintEvent(QPaintEvent *event);                                                    // 绘图事件
    void resizeEvent(QResizeEvent *event);                                                  // 尺寸改变事件
    void initParam();                                                                       // 初始化参数
    void drawStatus(QPainter *pPainter);                                                    // 绘制状态
    void drawBrakeShoe(QPainter *pPainter);                                                 // 绘制扎瓦
    void drawWheel(QPainter *pPainter);                                                     // 绘制车轮
    void drawSpace(QPainter *pPainter);                                                     // 绘制车轮与闸瓦间隙
    void drawText(QPainter *pPainter);                                                      // 绘制文字




private:
    QPoint mCenter;                                                                         // 中心点
    TRACTION_STATUS mStatus = TRACTION_STATUS::INIT;                                        // 牵引制动状态
    QColor mBrakeShoeColor = QColor(212, 212, 212);                                         // 闸瓦颜色
    QColor mWheelColor = QColor(212, 212, 212);                                             // 车轮颜色
    QColor mTextColor = QColor(212, 212, 212);                                              // 文字颜色
    QString mText = "";                                                                     // 文本内容
    bool mCustomerTextFlag = false;                                                         // 自定义文本开关
    QString mTextFontFace = "Arial";                                                        // 文本字体类型
    quint8 mWheelDiameterProportion = 60;                                                   // 车轮直径占控件高度的百分比
    float mWheelDiameter = 0;                                                               // 车轮直径
    quint8 mBrakeShoeHeightProportion = 60;                                                 // 闸瓦高度占车轮直径的百分比
    quint8 mSpaceWidth = 2;                                                                 // 闸瓦和车轮间隙宽度(2个像素)
    QTimer mTimer;                                                                          // 刷新定时器

};

#endif // MOTORINGANDBRAKINGSTATUS_H
